{% extends "base.html" %} {% block title %}Handler's profile · {{ app_name }}{% endblock %} {% block body %}

📣 Your Handler's profile where it shows you off — or shows you up 📖

{% if hosted %}

Not on a hosted instance — the Handler's profile lives on a server the pup chose, and posts from the pup's own box.

{% else %}

⚠ Before you switch this on

The profile {% if live %}on{% else %}off{% endif %}

{% if has_token %}
{% endif %}

What it may post

{% for g in grants %}{{ '✓' if g.on else '·' }} {{ g.label }} {% endfor %}

Granted and revoked on Consent, under your AI Handler. {% if not ai_live %}Your AI Handler isn't on — set it up on the AI page first.{% endif %} {% if paused %}You're paused: it writes and posts nothing until you resume.{% endif %}

Photos it may post

Only the ones you tick — and only while “Post: photos you pick” is granted. Each is re-encoded before it leaves: no location, no camera data.

{% for c in candidates %} {% else %}

No photos yet.

{% endfor %}
{% if candidates %}{% endif %}

Drafts — waiting for you {% if drafts %}{{ drafts|length }}{% endif %}

{% for p in drafts %}
{% if p.media_uid and media_id.get(p.media_uid) %}the photo it attached{% endif %}
written from: {{ p.groups|join(', ') or 'nothing' }}{% if p.error %} · {{ error_says(p.error) }}{% endif %}
{% else %}

Nothing waiting.

{% endfor %}
{% if outbox %}

On its way

{% for p in outbox %}

{{ p.body }}

{{ p.status }}{% if p.approved_by == 'ai' %} · without asking{% endif %}{% if p.error %} · {{ error_says(p.error) }}{% endif %} {% if p.status in ('failed', 'queued') %}
{% if p.status == 'failed' %}{% endif %}
{% endif %}
{% endfor %}
{% endif %}

On the profile {% if posted %}{{ posted|length }}{% endif %}

{% for p in posted %}

{{ p.body }}

{{ p.posted_at|local('%Y-%m-%d %H:%M') }} · {{ p.visibility }}{% if p.approved_by == 'ai' %} · posted without asking{% endif %} {% if p.remote_url %} · see it{% endif %} {% if p.error %} · {{ error_says(p.error) }}{% endif %}
{% else %}

Nothing posted.

{% endfor %} {% if posted %}
{% endif %}
{% if past %}
Discarded and deleted {% for p in past %}

{{ p.status }} · {{ p.body }}{% if p.error %} · {{ error_says(p.error) }}{% endif %}

{% endfor %}
{% endif %} {% endif %} {% endblock %}